﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dycox.ComponentModel;

namespace Dycox.Workflows
{
    public class PopulateHintEventArgs : EventArgs
    {
        public PopulateHintEventArgs(Stage currentStage, WFStep currentStep, Stage upcomingStage, IReflectionRoot reflectionObject)
            : this(new MessageSet(), currentStage, currentStep, upcomingStage, reflectionObject)
        {
        }

        public PopulateHintEventArgs(MessageSet hint, Stage currentStage, WFStep currentStep, Stage upcomingStage, IReflectionRoot reflectionObject)
        {
            if (upcomingStage == null)
                throw new ArgumentNullException("upcomingStage");
            if (hint == null)
                throw new ArgumentNullException("hint");

            _hint = hint;
            _currentStage = currentStage;
            _currentStep = currentStep;
            _reflectObject = reflectionObject;
            _upcomingStage = upcomingStage;
        }

        private Stage _currentStage;

        public Stage CurrentStage
        {
            get { return _currentStage; }
        }

        private Stage _upcomingStage;

        public Stage UpcomingStage
        {
            get { return _upcomingStage; }
        }

        private WFStep _currentStep;

        public WFStep CurrentStep
        {
            get { return _currentStep; }
        }

        private IReflectionRoot _reflectObject;

        public IReflectionRoot ReflectionObject
        {
            get { return _reflectObject; }
        }

        private MessageSet _hint;

        public MessageSet Hint
        {
            get { return _hint; }
        }

    }

    public delegate void PopulateHintEventHandler(object sender, PopulateHintEventArgs e);
}
